from django.test import TestCase
from django.views import View
from django.utils import  six
class same_as_view(object):
    # 定义一个全局变量调度选择器变量
    names = ["post","get"]
    # 定义初始化方法
    def __init__(self,**kwargs):
        # 如果有参数进来就设置成类属性
        for key ,value in six.iteritems(kwargs): # six.iteritems(kwargs) 兼容python2用的
            setattr(self,key,value)
    # 写个入口函数 class方法
    @classmethod
    def as_view(cls, **initkwargs):
        # 如果输入的参数名和cls.names中有相同的则爆出异常
        # 如果输入的参数名不是cls中已经定义的属性名则爆出异常
        for key in initkwargs:
            if key in cls.names:
                raise TypeError("你常日用了一个选择器变量名 %s 作为参数，不要对%s() 这么做" % (key, cls.__name__))
            if key is not hasattr(cls,key):
                raise TypeError("你输入的参数%s在类属性中没有定义%r" % (key, cls.__name__) )

        # 创建一个方法
        # 1.实例化这个类
        def view(request,*args,**kwargs):
            self = cls(**initkwargs)
            self.request = request
            self.args = args
            self.kwargs = kwargs

            return view


    # 写一个调度函数



